﻿Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports WSEntidades
Imports WSNegocios
' NOTA: puede usar el comando "Cambiar nombre" del menú contextual para cambiar el nombre de clase "ServiceSeguridad" en el código, en svc y en el archivo de configuración a la vez.
Public Class ServiceSeguridad
    Implements IServiceSeguridad

#Region "CatalgoProceso"
    Public Function GetListadoProcesos(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As List(Of ProcesosBE) Implements IServiceSeguridad.GetListadoProcesos
        Dim procesoBL As ProcesosBL = New ProcesosBL
        Dim procesoBE As List(Of ProcesosBE)
        Dim codResp As Integer = 0
        Dim msg As String = ""
        detResp = New DetalleRespuesta()
        Try
            procesoBE = procesoBL.GetListadoProcesos(tokenConexion, codResp, msg)
            If (procesoBE IsNot Nothing) Then
                detResp.Codigo = codResp
                detResp.Mensajes = msg
                Return procesoBE
            Else
                detResp.Codigo = codResp
                detResp.Mensajes = msg
                Return Nothing
            End If
        Catch ex As Exception
            detResp.Codigo = 999
            detResp.Mensajes = "Error al obtener listado de procesos: " & ex.Message & vbCrLf
            Return Nothing
        Finally
            procesoBE = Nothing
            procesoBL = Nothing
            codResp = Nothing
            msg = Nothing
        End Try
    End Function
#End Region

#Region "CatalogoPerfilOK-REVISAR"
    Public Function RegistrarPerfil(ByVal tokenConexion As String, ByVal Perfil As perfilBE, ByVal Procesos As List(Of ProcPerBE), ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceSeguridad.RegistrarPerfil
        Dim PerfilBL As PerfilBL = New PerfilBL()
        detResp = New DetalleRespuesta()
        Try
            Return (PerfilBL.RegistrarPerfil(tokenConexion, Perfil, Procesos, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al registrar perfil: " & ex.Message)
            Return False
        Finally
            PerfilBL = Nothing
        End Try
    End Function

    Public Function ActualizaPerfil(ByVal tokenConexion As String, ByVal Perfil As perfilBE, ByVal Procesos As List(Of ProcPerBE), ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceSeguridad.ActualizaPerfil
        Dim PerfilBL As PerfilBL = New PerfilBL
        detResp = New DetalleRespuesta()
        Try
            Return (PerfilBL.ActualizaPerfil(tokenConexion, Perfil, Procesos, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos del Perfil: " & ex.Message)
            Return False
        Finally
            PerfilBL = Nothing
        End Try
    End Function

    Public Function GetPerfil(ByVal tokenConexion As String, ByVal idPerfil As Integer, ByRef detResp As DetalleRespuesta) As List(Of perfilpermiBE) Implements IServiceSeguridad.GetPerfil
        Dim PerfilBL As PerfilBL = New PerfilBL
        detResp = New DetalleRespuesta()
        Try
            Return PerfilBL.GetPerfil(tokenConexion, idPerfil, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información del Perfil: " & ex.Message)
            Return Nothing
        Finally
            PerfilBL = Nothing
        End Try
    End Function

    Public Function GetListadoPerfiles(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As List(Of perfilBE) Implements IServiceSeguridad.GetListadoPerfiles
        Dim PerfilBL As PerfilBL = New PerfilBL
        detResp = New DetalleRespuesta()
        Try
            Return PerfilBL.GetListadoPerfiles(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener listado de los perfiles: " & ex.Message)
            Return Nothing
        Finally
            PerfilBL = Nothing
        End Try
    End Function
#End Region

#Region "UsuarioOK"
    Public Function cambiarPassword(ByVal tokenConexion As String, ByVal usuario As String, ByVal pwdActual As String,
                                    ByVal pwdNuevo As String, ByRef detRespuesta As DetalleRespuesta) As Boolean Implements IServiceSeguridad.cambiarPassword
        Dim userBL As UsuariosBL = New UsuariosBL()
        detRespuesta = New DetalleRespuesta()
        Try
            Return (userBL.cambiarContraseña(tokenConexion, usuario, pwdActual, pwdNuevo, detRespuesta))
        Catch ex As Exception
            detRespuesta.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detRespuesta.Mensajes & "Error al cambiar contraseña del usuario: " & ex.Message)
            Return False
        Finally
            userBL = Nothing
        End Try
    End Function
#End Region
End Class
